{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "aee06d83-16d5-4891-a047-5562362cb9c2",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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SmXfvn2qXbu2JKlTp05KTU3VlClT9MADDygUCkX0dz/++OO64YYbdOONN+qss87S3//+dyUlJWny5MkR/b0AEG1OKc2TwuGwcnJyIl1LoOTmSnv3StnZrisBgqFmzZpavHix2rRpI0mqVKmSZs2apREjRmj16tXKjtCbJT8/X8uWLdNtt9122O/o06ePUlNTi/29eXl5yjtke/oDn1+RqhFA+dm719roWHw7JyQkHPNCOhQuxRhKdna2EhMTy6wwAAAAHJ+srCxVr169xOeUKtjFYo9dSkq2rrgiSVu2bDnm/0REr+zsbCUl8TqXpEePHnr99ddVt25dJ79/+/btatWqlVJSUtSlS5eD9z/22GP63//9Xy1fvvyIv/PzHrvt27erS5cu+vLLL9WgQYNyqRvlj/dzbJg+PVu33x6br3NpeuxKNRQbCoVi7n/eqafa9+rVq8fcf3ss4nU+uq5du+rCCy/U3Llz1apVq4P3r1y5Uvfee6/eeeediP7+KlWqqGLFisrJyTnsNcrOzlb9+vWP63VLSEjgdY4BvJ/9Fh9v33mdi8fiCQAlmjp1qq6//nr17NlTH330kdavX68rr7xSnTp1UuXKlSP+++Pi4tSxY0elpKQcdn9KSoq6d+8e8d8PANGkVD12AGLbuHHjFBcXp4suukgFBQXq37+/li5dqg4dOpTL7x87dqyGDRumTp06qVu3bnruueeUlpamESNGlMvvBxAcO3a4riDYCHZH0a5dZbVsOa5ceiTgTuXKlTVuHK9zSbZv364JEyZo6tSpat26tdatW6err7663EKdJF111VX64Ycf9MADD2j79u1q06aN3nnnHTVu3LhUf//A68vr7Dfez7FhyZLKuvNOXuejKdXiiVg1YoT07LOuqwDcio+PV6tWrfTQQw9p0KBBmjt3rq688krdc889uuuuu1yXVyoHVvaXZkUZgGCjbS4ZPXYlKCyUcnKkhATXlQDuTJs2TVdfffXB2/3799f8+fP1q1/9St99950mTZrksDoAsSQnx9pmHB2LJ0pw9dXS+PGuqwDcOjTUHdChQwctXrxYCxYsKP+CAMSs8eOtbcbREexKcMiWWQB+pkmTJvr4449dlwEgxtA2l4xgV4JKlaSvv5Y2bXJdCRBMp512musSAMSITZusTa5UyXUlwUawK0HlylJyMkurAQBwbccOa5NZDFsygt0xdOy4WcOG3aCmTZsqPj5ezZs317hx45Sfn++6NJSxhx9+WN27d1fVqlVVo0YN1+WgjEyaNEnnnHOOJKl3795atGiR44pQ1lJTUzV48GDVr19foVBIb7zxhuuSEAG33jpBM2Z0VkJCgurUqaMhQ4bo66+/dl1W4BDsjuGnn9YpLq5Qv//9FK1du1Z/+9vf9Oyzz+qee+5xXRrKWH5+voYOHapbbrnFdSkoIy+//LLGjBmjO+64Q5LUrVs3DRw4UGlpaY4rQ1nKzc1V27Zt9fTTT7suBREyd660a9dCjR07UkuWLFFKSor279+vfv36KTc313V5gcI+dqWwcKE0Y4b0wgt2+7HHHtPkyZO1icl3Xpo+fbrGjBmjzMxM16XgJHXt2lUdOnTQI488cnAfu65du2rIkCGaMGGC6/IQAaFQSLNnz9aQIUNcl4IydP310nXXSX36FN2XkZGhOnXqaOHCherdu7e74gKGHrtS6NNHCoWk7dvtdlZWlmrWrOm2KAAlys/P1/Lly9WvX7/D7u/Xr58WL17sqCoAx2v7dmuDDw11krXFkmiPf4ZgV0o33ig9+aS0ceNGPfXUU5xRCQTczp07VVBQoLp16x52f926dbWDFVFA1HjySWuDDxUOhzV27Fj17NlTbdq0cVNYQMVssBs/frxCoVCJX8uWLTv4/LZtpSVLtunCCwdo6NChuvHn/8oQSMf7OsM/oVDosNvhcPiI+wAE09at0qpV1gYfatSoUfr888/10ksvOakryGL2SLFRo0YVu6P+oZo0aXLwz5mZ27RpU7IqVOim5557LsLVoawc7+sMf9SqVUsVK1bUjh07dPbZZx+8//vvvz+iFw9AMN11lzRunFS1atF9o0eP1ptvvqnU1FQ1bNjQXXEBFbPBrlatWqpVq1apnpuenq7k5GR1795RhYXTtGxZBXa+jhLH8zrDL3FxcerYsaNSUlJ0wQUXHLw/JSVFl1xyicPKAJTGZ59J4bB03nl2OxwOa/To0Zo9e7YWLFigpk2bui0woGI22JXWtm3b1LdvXzVq1EgTJ07UunUZuv9+6fnnpXr16rkuD2UoLS1Nu3btUlpamgoKCrRq1SpJUosWLVStWjW3xeGEjB07VsOGDTvYY3f33XcrLS2NObKe2b17tzZs2HDw9rfffqtVq1apZs2aatSokcPKcDIeeUT685+Lbo8cOVIzZ87UnDlzlJCQcHCubGJiouLj4x1VGTxsd3IM06dP1+9+97tiHyssDIupOv4YPny4ZsyYccT98+fPV9++fcu/IJSJSZMm6a9//au2bNmitm3b6sknn2RrBM8sWLBAycnJR9x/3XXXafr06eVfEE5KOCxNmCDVqiXddFPR/UebGztt2jQNHz68fIqLAgS7E7Bnj3TlldKDD0rt27uuBsCxZGdnH9zHrnr16q7LAVCClSulP/1JeuWVw+fWoXRidlXsyahaVfrb36T77pMyMlxXAwCAHzIypHvvtTaWUHdiCHYn6IwzpJEjJabqAABQNm6+WRo92tpYnBiC3Un45S+l/v2l8eOlwkLX1QAAEJ0KC60tHTBAGjjQdTXRjWB3kq69VlqxwjZQBAAAx2/lSmtLr73WdSXRj2B3kk49VXriCenhh6WlS11XAwBAdFm61FbBPvGEtak4OQS7MtC0qe2188c/SpxOBQBA6Sxdam3nn/5kbSlOHsGujLRta5sW//nPUnq662oAAAi29HQ7Luz55488CxYnjmBXhho3tp2yf/97ac0a19UAABBMa9ZYW/noo9Z2ouwQ7MrYOefY/nb33CN99ZXragAACJavvrI28r77pDZtXFfjH4JdBHTvbpNAb71VyspyXQ0QW1566SVVqVJF6YfMiRg1apQkKYs3JOBUZqa1jU88YW0lyh7BLkKaNpX+8hfpssukjz5yXQ0QO66++mqdeeaZmjBhgiTp/vvv1wcffCDJDgsH4MaiRdIVV1jbyEKJyCHYRVC3btI//iG98IL05puuqwFiQygU0sMPP6ypU6fqL3/5i5544gm9/vrrBx+/9NJLddppp+mKK65wWCUQW+bMkaZNk2bMsLYRkRMKh8Nh10X4Lj1dGjbM5hOcf77raoDY0KFDB61du1bvv/++2rdvr8TERGVlZWn58uXavXu3ZsyYoddee811mYD3PvzQ9nr9xz+kBg1cV+M/euzKQYMG0nvv2T/q++6T9u51XRHgt7lz52rdunUqKChQ3bp1D3ssOTlZCQkJjioDYsfevdbm/eMf0rvvEurKC8GunMTFSdOnSy1bSkOHSps3u64I8NOKFSs0dOhQTZkyRf3799ef/vQn1yUBMWfzZptP17KltX1xca4rih2nuC4g1vz2tza/4JZbpOHDpauucl0R4I/Nmzdr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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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CKYTTzzRdQkAYsTGjdYmV6niupJgI9iVIi7Ounu3b3ddCQAAsW37dmuTWQxbOoLdESQnb9awYTeqefPmio+PV4sWLTRu3Djl5eW5Lg3l7NFHH1XXrl1VvXp11a5d23U5KCcTJkzQWWedJUnq3r27FixY4LgilLf58+dr4MCBatSokUKhkN59913XJSECbrttvKZM6aiEhATVr19fgwYN0rp161yXFTgEuyP497/XqmrVQt1880StXr1aTz31lF588UXde++9rktDOcvLy9PgwYP1xz/+0XUpKCdvvvmmRo8erbvuukuS1KVLFw0YMEBpaWmOK0N5ysnJUdu2bfXcc8+5LgUR8skn0q5d8zRmzEgtXrxYKSkp2rdvn/r27aucnBzX5QUKq2LLYN48acoU6dVX7fbjjz+uF154QRuZfOelyZMna/To0crIyHBdCo5T586d1b59ez322GMHVsV27txZgwYN0vjx412XhwgIhUKaMWOGBg0a5LoUlKMbbpCuu07q0aPovp07d6p+/fqaN2+eunfv7q64gKHHrgx69JBCoaJjTDIzM1WnTh23RQEoVV5enpYtW6a+ffsWu79v375auHCho6oAHK1t26wNPjjUSdYWS6I9/g2CXRnddJP07LPShg0b9I9//IMzKoGA++WXX1RQUKAGDRoUu79BgwbazoooIGo8+6y1wQcLh8MaM2aMzj//fLVp08ZNYQEVs8HugQceUCgUKvVj6dKlBx7ftq20ePFW9enTX4MHD9ZNv/1fhkA62ucZ/gmFQsVuh8PhQ+4DEEw//SStXGlt8MFGjRqlb775Rm+88YaTuoIsZo8UGzVqVLFjkkqSlJR04OuMjK3auLGXKlXqopdeeinC1aG8HO3zDH/UrVtXlStX1vbt23XmmWceuH/Hjh2H9OIBCKaxY6Vx46Tq1Yvuu/322/Xee+9p/vz5atKkibviAipmg13dunVVt27dMj02PT1dvXr1UteuyQqHJ2np0krq1CnCBaJcHM3zDL9UrVpVycnJSklJ0QUXXHDg/pSUFF122WUOKwNQFl9/LYXD0rnn2u1wOKzbb79dM2bM0Ny5c9W8eXO3BQZUzAa7stq6dat69uypZs2a6YknntDatTv14IPSK69IDRs2dF0eylFaWpp27dqltLQ0FRQUaOXKlZKkli1bqmbNmm6LwzEZM2aMhg0b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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "###############\n",
    "# Authored by Weisheng Jiang\n",
    "# Book 3  |  From Basic Arithmetic to Machine Learning\n",
    "# Published and copyrighted by Tsinghua University Press\n",
    "# Beijing, China, 2022\n",
    "###############\n",
    "\n",
    "# Bk3_Ch8_01\n",
    "\n",
    "from matplotlib import pyplot as plt \n",
    "from sympy import plot_implicit, symbols, Eq\n",
    "x1, x2 = symbols('x1 x2')\n",
    "\n",
    "def plot_curve(Eq_sym):\n",
    "\n",
    "    h_plot = plot_implicit(Eq_sym, (x1, -2.5, 2.5), (x2, -2.5, 2.5),\\\n",
    "                           xlabel = '$\\it{x_1}$', ylabel = '$\\it{x_2}$') \n",
    "    h_plot.show()\n",
    "\n",
    "#%% plot ellipses\n",
    "\n",
    "plt.close('all')\n",
    "\n",
    "# major axis on x1\n",
    "Eq_sym = Eq(x1**2/4 + x2**2,1)\n",
    "plot_curve(Eq_sym)\n",
    "\n",
    "# # major axis on x2\n",
    "# Eq_sym = Eq(x1**2 + x2**2/4,1)\n",
    "# plot_curve(Eq_sym)\n",
    "\n",
    "# # major axis on x1 with center (h,k)\n",
    "# Eq_sym = Eq((x1-0.5)**2/4 + (x2-0.5)**2,1)\n",
    "# plot_curve(Eq_sym)\n",
    "\n",
    "# # major axis on x2 with center (h,k)\n",
    "# Eq_sym = Eq((x1-0.5)**2 + (x2-0.5)**2/4,1)\n",
    "# plot_curve(Eq_sym)\n",
    "\n",
    "# # major axis rotated counter clockwise by pi/4\n",
    "# Eq_sym = Eq(5*x1**2/8 -3*x1*x2/4 + 5*x2**2/8,1)\n",
    "# plot_curve(Eq_sym)\n",
    "\n",
    "# # major axis rotated counter clockwise by 3*pi/4\n",
    "# Eq_sym = Eq(5*x1**2/8 +3*x1*x2/4 + 5*x2**2/8,1)\n",
    "# plot_curve(Eq_sym)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f66a172f-9a0d-4ce9-acce-21515e3a973b",
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'cartopy'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[3], line 3\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpl\u001b[39;00m\n\u001b[1;32m      2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mplt\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mcartopy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcrs\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mccrs\u001b[39;00m\n\u001b[1;32m      4\u001b[0m \u001b[38;5;66;03m# 创建画布以及ax\u001b[39;00m\n\u001b[1;32m      5\u001b[0m fig \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mfigure()\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'cartopy'"
     ]
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import cartopy.crs as ccrs\n",
    "# 创建画布以及ax\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111, projection=ccrs.PlateCarree())\n",
    "\n",
    "# 调用ax的方法画海岸线\n",
    "ax.coastlines()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "43d6851d-c4b4-4fb3-ba01-3652fd78005e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Defaulting to user installation because normal site-packages is not writeable\n",
      "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n",
      "Collecting cartopy\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/04/87/8dc9249e67c635a5c08ae81d4243a1ad69a1b91b703d3ab9be7fa78efc2b/Cartopy-0.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m11.7/11.7 MB\u001b[0m \u001b[31m33.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: numpy>=1.23 in /opt/anaconda3/lib/python3.11/site-packages (from cartopy) (1.26.4)\n",
      "Requirement already satisfied: matplotlib>=3.6 in /opt/anaconda3/lib/python3.11/site-packages (from cartopy) (3.8.0)\n",
      "Collecting shapely>=1.8 (from cartopy)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/25/aa/53f145e5a610a49af9ac49f2f1be1ec8659ebd5c393d66ac94e57c83b00e/shapely-2.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m76.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: packaging>=21 in /opt/anaconda3/lib/python3.11/site-packages (from cartopy) (23.1)\n",
      "Collecting pyshp>=2.3 (from cartopy)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/98/2f/68116db5b36b895c0450e3072b8cb6c2fac0359279b182ea97014d3c8ac0/pyshp-2.3.1-py2.py3-none-any.whl (46 kB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.5/46.5 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25hCollecting pyproj>=3.3.1 (from cartopy)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/3c/e5/2cb256148c730b9c3f74bfb3c03904f5070499c6dcaea153073a9642c6c6/pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.5/9.5 MB\u001b[0m \u001b[31m22.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (0.11.0)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (4.25.0)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (1.4.4)\n",
      "Requirement already satisfied: pillow>=6.2.0 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (10.2.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (3.0.9)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in /opt/anaconda3/lib/python3.11/site-packages (from matplotlib>=3.6->cartopy) (2.8.2)\n",
      "Requirement already satisfied: certifi in /opt/anaconda3/lib/python3.11/site-packages (from pyproj>=3.3.1->cartopy) (2024.2.2)\n",
      "Requirement already satisfied: six>=1.5 in /opt/anaconda3/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib>=3.6->cartopy) (1.16.0)\n",
      "Installing collected packages: shapely, pyshp, pyproj, cartopy\n",
      "\u001b[33m  WARNING: The script pyproj is installed in '/home/geobeans/.local/bin' which is not on PATH.\n",
      "  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33m  WARNING: The script cartopy_feature_download is installed in '/home/geobeans/.local/bin' which is not on PATH.\n",
      "  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
      "\u001b[0mSuccessfully installed cartopy-0.24.1 pyproj-3.7.0 pyshp-2.3.1 shapely-2.0.6\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install cartopy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fb1eed32-eb75-4b33-a51c-3abf5626867d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
